home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / et / et3_0-a1.lha / et3 / src / ByteArray.C < prev    next >
C/C++ Source or Header  |  1992-04-27  |  2KB  |  97 lines

  1. #ifdef __GNUG__
  2. #pragma implementation
  3. #endif
  4.  
  5. #include "ByteArray.h"
  6.  
  7. #include "Class.h"
  8. #include "String.h"
  9.  
  10. char *cAtPutName= "AtPut";
  11.  
  12. //---- ByteArray ---------------------------------------------------------------
  13.  
  14. NewMetaImpl(ByteArray,Object, (TV(cont,cap), T(cap)));
  15.  
  16. void ByteArray::AllocByteArray(byte *aStr, int l)
  17. {                                   
  18.     if (aStr && (l != 0)) {         
  19.     if (l < 0)                  
  20.         l= strlen((char*)aStr)+1;
  21.     cont= new byte[cap= l];     
  22.     memcpy(cont, aStr, l);       
  23.     } else                          
  24.     cont= new byte[cap= 10];    
  25. }                                   
  26.  
  27. ByteArray::ByteArray(byte *aStr, int l)                
  28. {
  29.     AllocByteArray(aStr, l);        
  30. }
  31.  
  32. ByteArray::ByteArray(char *aStr, int l)                
  33. {
  34.     AllocByteArray((byte*) aStr, l);
  35. }
  36.  
  37. ByteArray::ByteArray(int size)                
  38. {
  39.     if (size <= 0)
  40.     size= 10;
  41.     cont= new byte[cap= size];
  42. }
  43.  
  44. ByteArray::~ByteArray()               
  45. {
  46.     SafeDelete(cont);
  47. }
  48.  
  49. void ByteArray::operator= (byte *s)
  50. {
  51.     strreplace((char**)&cont, (char*)s);
  52.     cap= strlen((char*)s)+1;
  53. }
  54.  
  55. unsigned long ByteArray::Hash() // Aho, Sethi, Ullman
  56. {
  57.     return strhash(cont);
  58. }
  59.  
  60. bool ByteArray::IsEqual(Object *b)
  61. {
  62.     return b->IsKindOf(ByteArray)
  63.     && strcmp((char*)cont, (char*)((ByteArray*)b)->cont) == 0;
  64. }
  65.  
  66. int ByteArray::Compare(Object *b)
  67. {
  68.     return strcmp((char*)cont, (char*)Guard(b, ByteArray)->cont);
  69. }
  70.  
  71. void ByteArray::SetString(byte *s)
  72. {
  73.    SafeDelete(cont);
  74.    cap= strlen((char*)s)+1;
  75.    cont= new byte[cap];
  76.    memcpy(cont, s, cap);
  77. }
  78.  
  79. OStream& ByteArray::PrintOn(OStream &s)
  80. {
  81.     Object::PrintOn(s);
  82.     return s.PrintString(cont, cap);
  83. }
  84.  
  85. IStream& ByteArray::ReadFrom(IStream& s)
  86. {
  87.     Object::ReadFrom(s);
  88.     SafeDelete(cont);
  89.     return s.ReadString(&cont, &cap);
  90. }
  91.  
  92. void ByteArray::InspectorId(char *buf, int sz)
  93. {
  94.     strn0cpy(buf, (char*)Str(), sz);
  95. }
  96.  
  97.